#pragma once
#include <iostream>

struct Company
{
    virtual ~Company() = default;
    virtual void working(char *buff) = 0;
};

struct BigCompany : public Company
{
    void working(char *buff) override
    {
        int len = strlen(buff);
        float money = len * 1.1;
        std::cout << "Big Company Offer: $" << money << std::endl;
    }
};

struct MidCompany : public Company
{
    void working(char *buff) override
    {
        int len = strlen(buff);
        float money = 0.8 * len;
        std::cout << "Mid Company Offer: $" << money << std::endl;
    }
};

struct SmallCompany : public Company
{
    void working(char *buff) override
    {
        int len = strlen(buff);
        float money = 0.6 * len;
        std::cout << "Small Company Offer: $" << money << std::endl;
    }
};

// TODO: more company type to be added